// types.ts

import { SexKeyType } from "@/const/character";
import { Equipment } from "@/const/equips/equipmentType";
export enum PlayerStatusOptionType {
  /**
   * HP 类型
   */
  HP = "HP"
}
export interface PlayerInfo {
  /**
   * 用户名
   */
  userName: string;
  /**
   * 中文性别
   */
  sexName: string;
  /**
   * 用户是否登陆
   */
  isLogin?: boolean;
  /**
   * 性别
   */
  sex: SexKeyType;
  /**
   * 角色选择
   */
  characterIndex: number;
  /**
   * 当前金钱
   */
  money: number;
  /**
   * 当前状态
   * 0 空闲
   * 1 死亡
   * 2 繁忙
   */
  state: number;
}
/**
 * 玩家状态设置配置项
 */
export interface PlayerStatusOption {
  /**
   * 状态类型
   */
  type: PlayerStatusOptionType;
  /**
   * 值
   */
  value: number;
}
export interface PlayerProperty {
  /**
   * 力量
   * 加成攻击力
   */
  STR: number;
  /**
   * 体质
   * 决定生命值和回复能力，加成防御力
   */
  VIT: number;
  /**
   * 敏捷
   * 加成攻击速度和暴击率
   */
  DEX: number;
  /**
   * 当前生命值
   */
  CHP: number;
  /**
   * 基础最大生命值
   */
  HP: number;
}
export interface PlayerBattleProperty extends PlayerProperty {
  /**
   * 最大生命值
   * (25*体质+装备)
   */
  HP: number;

  /**
   * 生命缓和
   * (2*体质+装备)
   */
  RHP: number;
  /**
   * 攻击力
   * (力量/50+1)(1*力量+装备)
   */
  ATK: number;
  /**
   * 防御力
   * (体质/250+1)(5*体质+装备)
   */
  DEF: number;
  /**
   * 攻击速度
   * (1+敏捷/100)(装备攻速+装备)
   */
  AS: number;
  /**
   * 暴击率
   * (敏捷/敏捷+250+装备)
   */
  CRR: number;
  /**
   * 暴击伤害
   * (1.5+装备)
   */
  CRD: number;
}
export interface PlayerWearableEquipments {
  weapon?: Equipment;
  lorica?: Equipment;
  necklace?: Equipment;
}
// 批量移除背包
export interface RemovePackItemMulty {
  id: number;
  count: number;
}

export interface PlayerState {
  userInfo: PlayerInfo;
  userProperty: PlayerProperty;
  userPackage: PackItem[];
  userWearableEquipments: PlayerWearableEquipments;
  userTowerLevel: any;
}
